<?xml version='1.0' encoding='UTF-8'?>
<model name="BG51" xmlns="http://www.cellml.org/cellml/1.1#" xmlns:cellml="http://www.cellml.org/cellml/1.1#">
    <!-- Intracellular pH regulation-->
    <units name="dim">
        <unit units="dimensionless"/>
    </units>
    <units name="per_s">
        <unit exponent="-1" units="second"/>
    </units>
    <units name="mol_per_s">
        <unit units="mole"/>
        <unit exponent="-1" units="second"/>
    </units>
    <units name="per_mol">
        <unit exponent="-1" units="mole"/>
    </units>
    <units name="per_mol2">
        <unit exponent="-2" units="mole"/>
    </units>
    <units name="C_per_mol">
        <unit units="coulomb"/>
        <unit exponent="-1" units="mole"/>
    </units>
    <units name="J_per_mol">
        <unit units="joule"/>
        <unit exponent="-1" units="mole"/>
    </units>
    <units name="J_per_C">
        <unit units="joule"/>
        <unit exponent="-1" units="coulomb"/>
    </units>
    <component name="main">
        <variable initial_value="0" name="t" units="second"/>
        <variable initial_value="9.64853321e4" name="F" units="C_per_mol"/>
        <variable initial_value="2578.73058" name="RT" units="J_per_mol"/>
        <variable initial_value="-0.057" name="u_e_m" units="J_per_C"/>
        <variable name="epsilon" units="dim"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>epsilon</ci>
                <apply>
                    <exp/>
                    <apply>
                        <divide/>
                        <apply>
                            <times/>
                            <ci>F</ci>
                            <ci>u_e_m</ci>
                        </apply>
                        <ci>RT</ci>
                    </apply>
                </apply>
            </apply>
        </math>
        <!-- state variables-->
        <variable initial_value="0" name="q_CO2_i" units="mole"/>
        <variable name="q_CO2_o" units="mole"/>
        <variable initial_value="0" name="q_HCO3_i" units="mole"/>
        <variable initial_value="0" name="q_HCO3_o" units="mole"/>
        <variable initial_value="4e-5" name="q_H_i" units="mole"/>
        <variable initial_value="2e-5" name="q_H_o" units="mole"/>
        <variable initial_value="0" name="q_NH3_i" units="mole"/>
        <variable initial_value="0" name="q_NH3_o" units="mole"/>
        <variable initial_value="0" name="q_NH4_i" units="mole"/>
        <variable name="q_NH4_o" units="mole"/>
        <!-- step change in external CO2-->
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>q_CO2_o</ci>
                <piecewise>
                    <piece>
                        <cn cellml:units="mole">0</cn>
                        <apply>
                            <lt/>
                            <ci>t</ci>
                            <cn cellml:units="second">100</cn>
                        </apply>
                    </piece>
                    <piece>
                        <cn cellml:units="mole">1.1877</cn>
                        <apply>
                            <lt/>
                            <ci>t</ci>
                            <cn cellml:units="second">200</cn>
                        </apply>
                    </piece>
                    <otherwise>
                        <cn cellml:units="mole">0</cn>
                    </otherwise>
                </piecewise>
            </apply>
            <!-- step change in external NH4+-->
            <apply>
                <eq/>
                <ci>q_NH4_o</ci>
                <piecewise>
                    <piece>
                        <cn cellml:units="mole">0</cn>
                        <apply>
                            <lt/>
                            <ci>t</ci>
                            <cn cellml:units="second">300</cn>
                        </apply>
                    </piece>
                    <piece>
                        <cn cellml:units="mole">10</cn>
                        <apply>
                            <lt/>
                            <ci>t</ci>
                            <cn cellml:units="second">400</cn>
                        </apply>
                    </piece>
                    <otherwise>
                        <cn cellml:units="mole">0</cn>
                    </otherwise>
                </piecewise>
            </apply>
        </math>
        <!-- substrate solubilities-->
        <variable initial_value="1e-8" name="K_CO2_o" units="per_mol"/>
        <variable initial_value="1e-8" name="K_CO2_i" units="per_mol"/>
        <variable initial_value="1e-5" name="K_HCO3_o" units="per_mol"/>
        <variable initial_value="1e-5" name="K_HCO3_i" units="per_mol"/>
        <variable initial_value="1" name="K_H_o" units="per_mol"/>
        <variable initial_value="1" name="K_H_i" units="per_mol"/>
        <variable initial_value="1e-8" name="K_NH3_o" units="per_mol"/>
        <variable initial_value="1e-8" name="K_NH3_i" units="per_mol"/>
        <variable initial_value="1e-5" name="K_NH4_o" units="per_mol"/>
        <variable initial_value="1e-5" name="K_NH4_i" units="per_mol"/>
        <!-- non-dimensional substrate quantities-->
        <variable name="Q_CO2_o" units="dim"/>
        <variable name="Q_CO2_i" units="dim"/>
        <variable name="Q_HCO3_o" units="dim"/>
        <variable name="Q_HCO3_i" units="dim"/>
        <variable name="Q_H_o" units="dim"/>
        <variable name="Q_H_i" units="dim"/>
        <variable name="Q_NH3_o" units="dim"/>
        <variable name="Q_NH3_i" units="dim"/>
        <variable name="Q_NH4_o" units="dim"/>
        <variable name="Q_NH4_i" units="dim"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>Q_CO2_o</ci>
                <apply>
                    <times/>
                    <ci>K_CO2_o</ci>
                    <ci>q_CO2_o</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>Q_CO2_i</ci>
                <apply>
                    <times/>
                    <ci>K_CO2_i</ci>
                    <ci>q_CO2_i</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>Q_HCO3_o</ci>
                <apply>
                    <times/>
                    <ci>K_HCO3_o</ci>
                    <ci>q_HCO3_o</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>Q_HCO3_i</ci>
                <apply>
                    <times/>
                    <ci>K_HCO3_i</ci>
                    <ci>q_HCO3_i</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>Q_H_o</ci>
                <apply>
                    <times/>
                    <ci>K_H_o</ci>
                    <ci>q_H_o</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>Q_H_i</ci>
                <apply>
                    <times/>
                    <ci>K_H_i</ci>
                    <ci>q_H_i</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>Q_NH3_o</ci>
                <apply>
                    <times/>
                    <ci>K_NH3_o</ci>
                    <ci>q_NH3_o</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>Q_NH3_i</ci>
                <apply>
                    <times/>
                    <ci>K_NH3_i</ci>
                    <ci>q_NH3_i</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>Q_NH4_o</ci>
                <apply>
                    <times/>
                    <ci>K_NH4_o</ci>
                    <ci>q_NH4_o</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>Q_NH4_i</ci>
                <apply>
                    <times/>
                    <ci>K_NH4_i</ci>
                    <ci>q_NH4_i</ci>
                </apply>
            </apply>
        </math>
        <!-- membrane fluxes for uncharged species (eqns 5.3.1 & 5.3.2)-->
        <variable name="v_CO2_m" units="mol_per_s"/>
        <variable initial_value="1" name="v_CO2_max" units="mol_per_s"/>
        <variable initial_value="1" name="gamma_CO2" units="dim"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>v_CO2_m</ci>
                <apply>
                    <divide/>
                    <apply>
                        <times/>
                        <ci>v_CO2_max</ci>
                        <apply>
                            <plus/>
                            <cn cellml:units="dim">1</cn>
                            <ci>gamma_CO2</ci>
                        </apply>
                        <apply>
                            <minus/>
                            <ci>Q_CO2_o</ci>
                            <ci>Q_CO2_i</ci>
                        </apply>
                    </apply>
                    <apply>
                        <plus/>
                        <apply>
                            <times/>
                            <cn cellml:units="dim">2</cn>
                            <ci>gamma_CO2</ci>
                        </apply>
                        <ci>Q_CO2_o</ci>
                        <ci>Q_CO2_i</ci>
                        <apply>
                            <times/>
                            <cn cellml:units="dim">2</cn>
                            <apply>
                                <times/>
                                <ci>Q_CO2_o</ci>
                                <ci>Q_CO2_i</ci>
                            </apply>
                        </apply>
                    </apply>
                </apply>
            </apply>
        </math>
        <variable name="v_NH3_m" units="mol_per_s"/>
        <variable initial_value="1" name="v_NH3_max" units="mol_per_s"/>
        <variable initial_value="1" name="gamma_NH3" units="dim"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>v_NH3_m</ci>
                <apply>
                    <divide/>
                    <apply>
                        <times/>
                        <ci>v_NH3_max</ci>
                        <apply>
                            <plus/>
                            <cn cellml:units="dim">1</cn>
                            <ci>gamma_NH3</ci>
                        </apply>
                        <apply>
                            <minus/>
                            <ci>Q_NH3_o</ci>
                            <ci>Q_NH3_i</ci>
                        </apply>
                    </apply>
                    <apply>
                        <plus/>
                        <apply>
                            <times/>
                            <cn cellml:units="dim">2</cn>
                            <ci>gamma_NH3</ci>
                        </apply>
                        <ci>Q_NH3_o</ci>
                        <ci>Q_NH3_i</ci>
                        <apply>
                            <times/>
                            <cn cellml:units="dim">2</cn>
                            <apply>
                                <times/>
                                <ci>Q_NH3_o</ci>
                                <ci>Q_NH3_i</ci>
                            </apply>
                        </apply>
                    </apply>
                </apply>
            </apply>
        </math>
        <!-- membrane fluxes for charged species (eqns 5.3.3 to 5.3.5)-->
        <variable name="v_HCO3_m" units="mol_per_s"/>
        <variable initial_value="1" name="kappa_HCO3_m" units="mol_per_s"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>v_HCO3_m</ci>
                <apply>
                    <times/>
                    <ci>kappa_HCO3_m</ci>
                    <apply>
                        <minus/>
                        <apply>
                            <times/>
                            <ci>Q_HCO3_o</ci>
                            <ci>epsilon</ci>
                        </apply>
                        <ci>Q_HCO3_i</ci>
                    </apply>
                </apply>
            </apply>
        </math>
        <variable name="v_H_m" units="mol_per_s"/>
        <variable initial_value="1e2" name="kappa_H_m" units="mol_per_s"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>v_H_m</ci>
                <apply>
                    <times/>
                    <ci>kappa_H_m</ci>
                    <apply>
                        <minus/>
                        <apply>
                            <times/>
                            <ci>Q_H_o</ci>
                            <ci>epsilon</ci>
                        </apply>
                        <ci>Q_H_i</ci>
                    </apply>
                </apply>
            </apply>
        </math>
        <variable name="v_NH4_m" units="mol_per_s"/>
        <variable initial_value="1" name="kappa_NH4_m" units="mol_per_s"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>v_NH4_m</ci>
                <apply>
                    <times/>
                    <ci>kappa_NH4_m</ci>
                    <apply>
                        <minus/>
                        <apply>
                            <times/>
                            <ci>Q_NH4_o</ci>
                            <ci>epsilon</ci>
                        </apply>
                        <ci>Q_NH4_i</ci>
                    </apply>
                </apply>
            </apply>
        </math>
        <!-- dissociation fluxes (eqns 5.3.6 to 5.3.9)-->
        <variable name="v_H2CO3_o" units="mol_per_s"/>
        <variable name="v_H2CO3_i" units="mol_per_s"/>
        <variable initial_value="1" name="kappa_H2CO3" units="mol_per_s"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>v_H2CO3_o</ci>
                <apply>
                    <times/>
                    <ci>kappa_H2CO3</ci>
                    <apply>
                        <minus/>
                        <ci>Q_CO2_o</ci>
                        <apply>
                            <times/>
                            <ci>Q_HCO3_o</ci>
                            <ci>Q_H_o</ci>
                        </apply>
                    </apply>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>v_H2CO3_i</ci>
                <apply>
                    <times/>
                    <ci>kappa_H2CO3</ci>
                    <apply>
                        <minus/>
                        <ci>Q_CO2_i</ci>
                        <apply>
                            <times/>
                            <ci>Q_HCO3_i</ci>
                            <ci>Q_H_i</ci>
                        </apply>
                    </apply>
                </apply>
            </apply>
        </math>
        <variable name="v_NH4_o" units="mol_per_s"/>
        <variable name="v_NH4_i" units="mol_per_s"/>
        <variable initial_value="1" name="kappa_NH4" units="mol_per_s"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>v_NH4_o</ci>
                <apply>
                    <times/>
                    <ci>kappa_NH4</ci>
                    <apply>
                        <minus/>
                        <ci>Q_NH4_o</ci>
                        <apply>
                            <times/>
                            <ci>Q_NH3_o</ci>
                            <ci>Q_H_o</ci>
                        </apply>
                    </apply>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>v_NH4_i</ci>
                <apply>
                    <times/>
                    <ci>kappa_NH4</ci>
                    <apply>
                        <minus/>
                        <ci>Q_NH4_i</ci>
                        <apply>
                            <times/>
                            <ci>Q_NH3_i</ci>
                            <ci>Q_H_i</ci>
                        </apply>
                    </apply>
                </apply>
            </apply>
            <!-- conservation equations-->
            <!--        ode(q_CO2_o, t) = -v_CO2_m-v_H2CO3_o;-->
            <apply>
                <eq/>
                <apply>
                    <diff/>
                    <bvar>
                        <ci>t</ci>
                    </bvar>
                    <ci>q_CO2_i</ci>
                </apply>
                <apply>
                    <minus/>
                    <ci>v_CO2_m</ci>
                    <ci>v_H2CO3_i</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <apply>
                    <diff/>
                    <bvar>
                        <ci>t</ci>
                    </bvar>
                    <ci>q_HCO3_o</ci>
                </apply>
                <apply>
                    <plus/>
                    <apply>
                        <minus/>
                        <ci>v_HCO3_m</ci>
                    </apply>
                    <ci>v_H2CO3_o</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <apply>
                    <diff/>
                    <bvar>
                        <ci>t</ci>
                    </bvar>
                    <ci>q_HCO3_i</ci>
                </apply>
                <apply>
                    <plus/>
                    <ci>v_HCO3_m</ci>
                    <ci>v_H2CO3_i</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <apply>
                    <diff/>
                    <bvar>
                        <ci>t</ci>
                    </bvar>
                    <ci>q_H_o</ci>
                </apply>
                <apply>
                    <plus/>
                    <apply>
                        <minus/>
                        <ci>v_H_m</ci>
                    </apply>
                    <ci>v_H2CO3_o</ci>
                    <ci>v_NH4_o</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <apply>
                    <diff/>
                    <bvar>
                        <ci>t</ci>
                    </bvar>
                    <ci>q_H_i</ci>
                </apply>
                <apply>
                    <plus/>
                    <ci>v_H_m</ci>
                    <ci>v_H2CO3_i</ci>
                    <ci>v_NH4_i</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <apply>
                    <diff/>
                    <bvar>
                        <ci>t</ci>
                    </bvar>
                    <ci>q_NH3_o</ci>
                </apply>
                <apply>
                    <plus/>
                    <apply>
                        <minus/>
                        <ci>v_NH3_m</ci>
                    </apply>
                    <ci>v_NH4_o</ci>
                </apply>
            </apply>
            <apply>
                <eq/>
                <apply>
                    <diff/>
                    <bvar>
                        <ci>t</ci>
                    </bvar>
                    <ci>q_NH3_i</ci>
                </apply>
                <apply>
                    <plus/>
                    <ci>v_NH3_m</ci>
                    <ci>v_NH4_i</ci>
                </apply>
            </apply>
            <!--        ode(q_NH4_o, t)  = -v_NH4_m-v_NH4_o;-->
            <apply>
                <eq/>
                <apply>
                    <diff/>
                    <bvar>
                        <ci>t</ci>
                    </bvar>
                    <ci>q_NH4_i</ci>
                </apply>
                <apply>
                    <minus/>
                    <ci>v_NH4_m</ci>
                    <ci>v_NH4_i</ci>
                </apply>
            </apply>
        </math>
        <variable name="pH_i" units="dim"/>
        <variable name="pH_o" units="dim"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <apply>
                <eq/>
                <ci>pH_i</ci>
                <apply>
                    <minus/>
                    <apply>
                        <log/>
                        <apply>
                            <times/>
                            <cn cellml:units="per_mol" type="e-notation">1<sep/>-3</cn>
                            <ci>q_H_i</ci>
                        </apply>
                    </apply>
                </apply>
            </apply>
            <apply>
                <eq/>
                <ci>pH_o</ci>
                <apply>
                    <minus/>
                    <apply>
                        <log/>
                        <apply>
                            <times/>
                            <cn cellml:units="per_mol" type="e-notation">1<sep/>-3</cn>
                            <ci>q_H_o</ci>
                        </apply>
                    </apply>
                </apply>
            </apply>
        </math>
        <!--        // Nernst relations (to check that molar qtys satisfy equilibrium conditions)-->
        <!--        var u_HCO3_Nernst: J_per_C;
        var u_H_Nernst: J_per_C;
        var u_NH4_Nernst: J_per_C;-->
        <!--        u_HCO3_Nernst = RT/F*ln(q_HCO3_o/q_HCO3_i);
        u_H_Nernst = RT/F*ln(q_H_o/q_H_i);
        u_NH4_Nernst = RT/F*ln(q_NH4_o/q_NH4_i);-->
    </component>
</model>
